package student

import (
	. "bysy-gin/handler"
	"bysy-gin/model"
	"github.com/gin-gonic/gin"
	"strconv"
)

func GetStudent(c *gin.Context) {
	SendRsp(c, nil, nil)
	return
}

func AddStudent(c *gin.Context) {
	var s model.StudentInfo
	//ShouldBind  --form绑定
	if err := c.ShouldBind(&s); err != nil {
		SendResponse(c, 1001, "接收数据失败!", err)
		return
	}
	//通过create方法，向数据库插入数据
	if err := s.Create(); err != nil {
		SendResponse(c, 1002, "写入数据失败！", nil)
		return
	}
	SendResponse(c, 0, "创建学生信息成功！", s)
}

func DeleteStudent(c *gin.Context) {
	//通过url携带参数传递id
	id, err := strconv.Atoi(c.Query("id")) //string --> int
	if err != nil {
		SendResponse(c, 1003, "数据转换失败！", nil)
		return
	}
	s := &model.StudentInfo{
		Id: uint64(id), //再将int类型转换为uint64
	}
	if err := s.Delete(); err != nil {
		SendResponse(c, 1004, "删除数据失败", nil)
		return
	}
	SendResponse(c, 0, "success!", nil)
	return
}

func UpdateStu(c *gin.Context) {
	//接收url携带的id
	//id, err := strconv.Atoi(c.Query("id"))
	//if err != nil {
	//	SendResponse(c, 1003, "数据转换失败！", nil)
	//	return
	//}

	//接收传递过来的json数据
	var s model.StudentInfo
	if err := c.ShouldBindJSON(&s); err != nil {
		SendResponse(c, 1001, "接收数据失败!", nil)
		return
	}
	//s.Id = uint64(id)
	//通过update方法，向数据库插入数据
	if err := s.Update(); err != nil {
		SendResponse(c, 1002, "修改数据失败！", err)
		return
	}

	SendResponse(c, 0, "修改学生信息成功！", s)
}

// 查询 根据id查询或者根据stu_name查询
func GetStuByIdName(c *gin.Context) {
	//根据 url携带参数查询
	id := c.Query("id")
	stuName := c.Query("stu_name")
	if id != "" {
		id, err := strconv.Atoi(c.Query("id"))
		if err != nil {
			SendResponse(c, 1003, "数据转换失败！id应该传递整数", nil)
			return
		}
		if s, err := model.GetStuById(uint64(id)); err != nil {
			SendResponse(c, 1002, "通过id查询数据失败！", err)
			return
		} else {
			SendResponse(c, 0, "请求数据成功！", s)
		}
	} else if stuName != "" {
		if s, err := model.GetStuByName(stuName); err != nil {
			SendResponse(c, 1002, "通过name查询数据失败！", err)
			return
		} else {
			SendResponse(c, 0, "请求数据成功！", s)
		}
	} else {
		SendResponse(c, 1002, "没有任何参数传递", nil)
	}
}
